import re
import json


def extract_json(text):
    """
    从字符串中提取第一个合法的 JSON 对象。

    参数:
        text (str): 包含 JSON 的原始文本

    返回:
        dict or None: 提取并解析后的 JSON 字典对象，失败返回 None
    """
    # 正则匹配最外层的 [ ... ]
    json_pattern = r'\[.*?\]'

    # 使用 re.DOTALL 让 . 可以匹配换行符
    match = re.search(json_pattern, text, flags=re.DOTALL)

    if match:
        json_str = match.group(0)
        try:
            # 解析 JSON 并返回字典
            return json.loads(json_str)
        except json.JSONDecodeError as e:
            print("JSON 解析失败：", e)
    else:
        print("未找到 JSON 内容")

    return None
if __name__ == "__main__":
    # 测试 extract_json 函数
    test_text = """
    这是一些文本，包含一个 JSON 对象：
    [{"object": "星球杯", "target_pos": "hand"},{"object": "喜之郎", "target_pos": "hand"},{"object": "碗仔面", "target_pos": "hand"}]
    还有一些其他文本。
    """
    
    result = extract_json(test_text)
    if result:
        print("提取的 JSON:", result)
    else:
        print("未能提取 JSON")